#include <vector>
#include <list>
#include <map>
#include <set>
#include <queue>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <limits>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>

using namespace std;


class ChessboardPattern {
public:
	vector <string> makeChessboard(int rows, int columns) {
		vector <string> kq;
		string typedot ,typex ;
		for (int i=0;i<columns;i++)
		if (i%2==1)
		{
			typedot+='X';
			typex+='.';
		} else
		{
			typedot+='.';
			typex+='X';
		}
		for (int i=0;i<rows;i++)
		if ((rows-i)%2==1) kq.push_back(typedot);
					else kq.push_back(typex);
		return kq; 
	}
};


// BEGIN KAWIGIEDIT TESTING
// Generated by KawigiEdit-pf 2.3.0
#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <cmath>
using namespace std;
bool KawigiEdit_RunTest(int testNum, int p0, int p1, bool hasAnswer, vector <string> p2) {
	cout << "Test " << testNum << ": [" << p0 << "," << p1;
	cout << "]" << endl;
	ChessboardPattern *obj;
	vector <string> answer;
	obj = new ChessboardPattern();
	clock_t startTime = clock();
	answer = obj->makeChessboard(p0, p1);
	clock_t endTime = clock();
	delete obj;
	bool res;
	res = true;
	cout << "Time: " << double(endTime - startTime) / CLOCKS_PER_SEC << " seconds" << endl;
	if (hasAnswer) {
		cout << "Desired answer:" << endl;
		cout << "\t" << "{";
		for (int i = 0; int(p2.size()) > i; ++i) {
			if (i > 0) {
				cout << ",";
			}
			cout << "\"" << p2[i] << "\"";
		}
		cout << "}" << endl;
	}
	cout << "Your answer:" << endl;
	cout << "\t" << "{";
	for (int i = 0; int(answer.size()) > i; ++i) {
		if (i > 0) {
			cout << ",";
		}
		cout << "\"" << answer[i] << "\"";
	}
	cout << "}" << endl;
	if (hasAnswer) {
		if (answer.size() != p2.size()) {
			res = false;
		} else {
			for (int i = 0; int(answer.size()) > i; ++i) {
				if (answer[i] != p2[i]) {
					res = false;
				}
			}
		}
	}
	if (!res) {
		cout << "DOESN'T MATCH!!!!" << endl;
	} else if (double(endTime - startTime) / CLOCKS_PER_SEC >= 2) {
		cout << "FAIL the timeout" << endl;
		res = false;
	} else if (hasAnswer) {
		cout << "Match :-)" << endl;
	} else {
		cout << "OK, but is it right?" << endl;
	}
	cout << "" << endl;
	return res;
}
int main() {
	bool all_right;
	bool disabled;
	bool tests_disabled;
	all_right = true;
	tests_disabled = false;
	
	int p0;
	int p1;
	vector <string> p2;
	
	{
	// ----- test 0 -----
	disabled = false;
	p0 = 8;
	p1 = 8;
	string t2[] = {"X.X.X.X.",".X.X.X.X","X.X.X.X.",".X.X.X.X","X.X.X.X.",".X.X.X.X","X.X.X.X.",".X.X.X.X"};
			p2.assign(t2, t2 + sizeof(t2) / sizeof(t2[0]));
	all_right = (disabled || KawigiEdit_RunTest(0, p0, p1, true, p2) ) && all_right;
	tests_disabled = tests_disabled || disabled;
	// ------------------
	}
	
	{
	// ----- test 1 -----
	disabled = false;
	p0 = 1;
	p1 = 20;
	string t2[] = {".X.X.X.X.X.X.X.X.X.X"};
			p2.assign(t2, t2 + sizeof(t2) / sizeof(t2[0]));
	all_right = (disabled || KawigiEdit_RunTest(1, p0, p1, true, p2) ) && all_right;
	tests_disabled = tests_disabled || disabled;
	// ------------------
	}
	
	{
	// ----- test 2 -----
	disabled = false;
	p0 = 5;
	p1 = 1;
	string t2[] = {".","X",".","X","."};
			p2.assign(t2, t2 + sizeof(t2) / sizeof(t2[0]));
	all_right = (disabled || KawigiEdit_RunTest(2, p0, p1, true, p2) ) && all_right;
	tests_disabled = tests_disabled || disabled;
	// ------------------
	}
	
	{
	// ----- test 3 -----
	disabled = false;
	p0 = 5;
	p1 = 13;
	string t2[] = {".X.X.X.X.X.X.","X.X.X.X.X.X.X",".X.X.X.X.X.X.","X.X.X.X.X.X.X",".X.X.X.X.X.X."};
			p2.assign(t2, t2 + sizeof(t2) / sizeof(t2[0]));
	all_right = (disabled || KawigiEdit_RunTest(3, p0, p1, true, p2) ) && all_right;
	tests_disabled = tests_disabled || disabled;
	// ------------------
	}
	
	if (all_right) {
		if (tests_disabled) {
			cout << "You're a stud (but some test cases were disabled)!" << endl;
		} else {
			cout << "You're a stud (at least on given cases)!" << endl;
		}
	} else {
		cout << "Some of the test cases had errors." << endl;
	}
	return 0;
}
// END KAWIGIEDIT TESTING
//Powered by KawigiEdit-pf 2.3.0!
